#include "iot/thing.h"
#include "port_bos.h"
#include <esp_log.h>

#define TAG "Pet"

#define CLEAN_VALUE_STR "{\"invoke_name \":\"clean\"}"
#define FEED_VALUE_STR "{\"invoke_name \":\"feed\"}"

namespace iot {

// 这里仅定义 Pet 的属性和方法，不包含具体的实现
class Pet : public Thing {
private:
public:
  Pet() : Thing("Pet", "BabyOS 桌面宠物") {
    // 定义设备可以被远程执行的指令
    methods_.AddMethod("clean", "清洁", ParameterList(),
                       [this](const ParameterList &parameters) {
                         bBabyOSSendMsg(MSG_TYPE_TSL_INVOKE,
                                        (uint8_t *)CLEAN_VALUE_STR,
                                        strlen(CLEAN_VALUE_STR), NULL);
                       });

    methods_.AddMethod("feed", "喂食", ParameterList(),
                       [this](const ParameterList &parameters) {
                         bBabyOSSendMsg(MSG_TYPE_TSL_INVOKE,
                                        (uint8_t *)FEED_VALUE_STR,
                                        strlen(FEED_VALUE_STR), NULL);
                       });
  }
};

} // namespace iot

DECLARE_THING(Pet);
